.include "tn2313def.inc"	;Файл описаний
.list						;Включение листинга
.def     temp=r18

;Разметка пямяти программ
 
        .cseg
		.org	0
;Вектора прерыванbий

start:		rjmp	init	;Переход на начало
			reti			;Внешнее прерыване 0
			reti			;Внешнее прерывание 1
			reti			;Таймер-счетчик 1,захват
			reti			;таймер-счетчик 1,совпадение,канал А
			reti			;таймер-счетчик 1,прерывание по переполнению
			reti			;таймер-счетчик 0,прерывание по переполнению
			reti			;Прерывание УАРТ прием завершен
			reti			;Прерывание УАРТ регистр данных пуст
			reti			;Прерывание УАРТ передача завершена
			rjmp	m1		;Прерывание по компаратору
			reti			;Прерывание по изменению на любом контакте
			reti			;таймер-счетчик 1.Совпадение канал В
			reti			;таймер-счетчик 0.Совпадение канал В
			reti			;таймер-счетчик 0.Совпадение канал А
			reti			;ЮСИ готовность к старту	
			reti			;ЮСИ переполнение
			reti			;ЕЕПРОМ Готовность
			reti			;переполнение охранного таймера

;Инициализация СТЕКА

init:		ldi		temp, RAMEND
			out		SPL, temp
									
;Инициализация портов
						
			ldi		temp, 0b11111100
			out		DDRB,temp
			ldi		temp,0b00000010
			out		PORTB,temp
									
;Инициализация компаратора

			ldi		temp,0b01101000
			out		ACSR, temp
			sbis	DIDR, 0b00000010
			sei

;Блок ожидания
m2:			rjmp	m2


;Обработка прерывания от компаратора

m1:			
			ldi		temp, 255		;Запись константы в регистр
wt1:		dec 	temp			;Уменьшение содержимого регистра на единицу
			brne 	wt1				;Если не равно нулю,то продолжить вычитание
			sbis	ACSR,ACO	;если бит ACO =1,то установка LED
			rjmp	m3			;Иначе на сброс LED
			cbi		PORTB,5		;Включаем LED
			reti
m3:			sbi 	PORTB,5		;Гасим LED
			reti				;выход из подпрограммы обработки прерывания

